const config = require('../../utils/config.js');

Page({
  data: {
    itemsWithCheck: [], // 每个项包含 `checked` 属性
    selected: [],       // 当前选中的 page 数组
    canSave: false      // 保存按钮是否可用
  },

  onLoad() {
    // 1. 读取本地存储的选中项（无则用默认值）
    const selected = wx.getStorageSync('selectedHomeItems') || config.defaultSelected;
    
    // 2. 预处理：为每个功能项添加 `checked` 属性
    const itemsWithCheck = config.allItems.map(item => ({
      ...item,
      checked: selected.includes(item.page) // JS 中计算选中状态
    }));

    this.setData({
      itemsWithCheck,
      selected,
      canSave: this.checkSelection(selected)
    });
  },

  // 勾选状态变化时更新
  onCheckChange(e) {
    console.log(e);
    const page = e.currentTarget.dataset.page; // 当前项的 page
    let { selected } = this.data;

    // 判断当前是否被勾选（checkbox 的 value 是数组，包含 page 则为选中）
    // const isChecked = e.detail.value.includes(page);

    
      // 勾选：添加到 selected（去重）
      if (!selected.includes(page)) {
        selected.push(page);
      }
      else {
        // 取消勾选：从 selected 移除
        selected = selected.filter(item => item !== page);
      }

    // 3. 重新计算所有项的 checked 状态
    const itemsWithCheck = config.allItems.map(item => ({
      ...item,
      checked: selected.includes(item.page)
    }));

    this.setData({
      selected,
      itemsWithCheck,
      canSave: this.checkSelection(selected)
    });
  },

  // 验证选中数量（1-4 项）
  checkSelection(selected) {
    return selected.length >= 1 && selected.length <= 8;
  },

  // 保存设置
  saveSetting() {
    const { selected } = this.data;

    wx.setStorageSync('selectedHomeItems', selected);
    wx.showToast({ title: '保存成功', icon: 'success' });
    wx.navigateBack();
  }
});